class Solution {
public:
    int minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
        priority_queue<int> q1,q2;
        int h=1,v=1;
        for(int i=0;i<horizontalCut.size();i++)
            q1.push(horizontalCut[i]);
        for(int i=0;i<verticalCut.size();i++)
            q2.push(verticalCut[i]);
        long long ret=0;
        while(q1.size()||q2.size())
        {
            if(q2.empty() ||  q1.size() && q1.top()>q2.top())
            {
                ret+=h*q1.top();
                q1.pop();
                v++;
            }
            else{
                ret+=v*q2.top();
                q2.pop();
                h++;
            }
        }
        return ret;
    }
};
